package com.ws.oop;
/*
类中方法的声明和使用
方法：描述类应该具有的功能
比如：Math类：sqrt()、random() ...
    Arrays类：sort()、toString()、equals() ...

1.举例：
public void eat() {}
public void sleep(int hour) {}
public String getName() {}
public String getNation(String nation) {}

2.方法的声明：
权限修饰符 返回值类型 方法名([形参列表1, 形参列表2],...) {
    方法体
}
注意：static、final、abstract 用来修饰方法

3.说明：
3.1 关于权限修饰符：
    Java规定的4中权限修饰符：private、public、缺省、protected
3.2 返回值类型：有返回值 VS 无返回值
    3.2.1 如果方法有返回值，则必须在方法声明时，指定返回值的类型。
        同时，方法中，需要使用 return 关键字来返回指定类型的变量或常量。
        如果方法没有返回值，则声明方法时，使用 void 来表示。通常，没有返回值的方法中，
        不需要使用 return，但是，如果使用的话，只能 " return; " 表示结束此方法。
    3.2.2 我们定义方法该不该有返回值？
        ① 题目要求
        ② 凭经验
3.3 方法名：属于标识符，遵循标识符的规则和规范

3.4 形参列表：方法可以声明 0个，1个或多个形参。
    3.4.1 格式：数据类型1 形参1, 数据类型2 形参2, ...
    3.4.2 我们定义方法时，该不该定义形参？
        ① 题目要求
        ② 凭经验（具体问题具体分析）
3.5 方法体：方法功能的具体体现

4.return关键字的使用：
    1.使用范围：使用在方法体中
    2.作用：①结束方法
           ②针对有返回值类型的方法 使用 "return 数据" 方法
    3.注意点：return关键字后面不可以声明执行语句

5.方法的使用中，可以调用当前类的属性或方法
    特殊的：方法A 中又调用了方法A：递归方法
    方法中不可以定义方法。
 */
public class CustomerTest {
    public static void main(String[] args) {
        Customer customer1 = new Customer();
        customer1.sleep(7);
    }
}

//客户类
class Customer {

    //属性
    String name;
    int age;
    boolean isMale;

    //方法
    public void eat() {
        System.out.println("客户吃饭");
        return;
        //return后不可以声明表达式
        //System.out.println("dfs");
    }

    public void sleep(int hour) {
        System.out.println("休息了" + hour + "个小时");
        eat();
        sleep(10);
    }

    public String getName() {
//        return name;
        if (age > 18) {
            return name;
        }
        return "Tom";
    }

    public String getNation(String nation) {
        String info = "我的国籍是：" + nation;
        return info;
    }

    public void info() {
        sleep(8);
//        public void swim() {
//            info();
//        }
    }
}